using System;
using System.Collections.Generic;
using SimpleServiceBus.Endpoint;
using SimpleServiceBus.Messages.Subscriptions;
using SimpleServiceBus.Utilities;

namespace SimpleServiceBus.Bus.Subscriptions
{
    public interface ISubscriptionManager: IEndpointService
    {
        void Publish(object message);
        IList<string> GetSubscribersForMessage(object message);


        void SubscribeToAll(string subscriberAddress);
        void SubscribeToMessage(Type messageType, string subscriberAddress);

        void UnsubscribeFromAll(string subscriberAddress);
        void UnsubscribeFromMessage(Type messageType, string subscriberAddress);
    }
}